package cn.newhopedairy.order.api;

import cn.newhopedairy.common.wrapper.R;
import cn.newhopedairy.order.command.DeliveredCmd;
import cn.newhopedairy.order.query.MainOrderQuery;
import cn.newhopedairy.order.response.MainOrderResp;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Neo.Li
 * @date 2020-09-09 17:16
 */
@Api(tags = "主订单API")
public interface MainOrderApi {
    /**
     * 查询所有订单
     *
     * @return
     */
    @ApiOperation("所有订单信息")
    @GetMapping("/main-orders")
    R<List<MainOrderResp>> getMainOrders();

    /**
     * 分页查询订单
     *
     * @param mainOrderQuery
     * @param page
     * @param size
     * @return
     */
    @ApiOperation("查询订单信息")
    @PostMapping("/main-orders/page")
    R<Page<MainOrderResp>> getMainOrders(@ApiParam("查询条件") @RequestBody MainOrderQuery mainOrderQuery,
                                         @ApiParam("页码") @RequestParam(name = "page", defaultValue = "1") Integer page,
                                         @ApiParam("页大小") @RequestParam(name = "size", defaultValue = "20") Integer size);

    /**
     * 查询一个主订单下的子订单
     *
     * @param mainOrderNo
     * @return
     */
    @ApiOperation("查询订单下的子订单信息")
    @GetMapping("/main-orders/{mainOrderNo}/sub-orders")
    R<List<MainOrderResp>> getSubOrdersByMainOrderNo(@PathVariable("mainOrderNo") String mainOrderNo);

    /**
     * 送达后更新订单的配送信息
     *
     * @param deliveredCmds 送达信息
     * @param mainOrderNo 主订单号
     * @return 主订单号
     */
    @PutMapping("/main-orders/{mainOrderNo}/delivered")
    R<Long> delivered(@RequestBody List<DeliveredCmd> deliveredCmds,
                      @PathVariable("mainOrderNo") String mainOrderNo);
}
